package cn.mujiankeji.mbrowser.app.应用操作

import cn.mujiankeji.mbrowser.工具.JSON
import cn.mujiankeji.mbrowser.数据.数据库.DBSearchEngine
import cn.mujiankeji.mbrowser.数据.数据库.搜索引擎项目
import kotlinx.serialization.Serializable

/**
 * 搜索引擎相关操作
 * 2025/06/12
 */
object 应用搜索引擎操作 {

    /**
     * 解析对象
     * 仅处理 名称、说明、文本、版本、地址列表
     */
    fun 解析对象(json : String) : DBSearchEngine?{
        try {
            return JSON.decodeFromString<搜索引擎格式化对象>(json)
                .toDBSearchEngine()

        }catch (e : Exception){
            e.printStackTrace()
            // throw Exception("非规范内容 ${e.toString()}")
            return null
        }
    }

    /**
     * 格式化对象
     */
    fun 格式化对象(db : DBSearchEngine) : String?{
        try {
            搜索引擎格式化对象().apply {
                名称 = db.名称
                说明 = db.说明?:""
                版本 = db.版本
                地址列表 = db.地址列表
            }.let {
                return JSON.encodeToString(it)
            }
        }catch (e : Exception){
            e.printStackTrace()
            return null
        }
    }


    @Serializable
    private class 搜索引擎格式化对象{
        var 名称 : String = ""
        var 说明 : String = ""
        var 版本 : Int = 0
        var 地址列表 : MutableList<搜索引擎项目> = ArrayList()

        fun toDBSearchEngine() : DBSearchEngine{
            return DBSearchEngine(名称 = 名称,
                说明 = 说明,
                版本 = 版本,
                地址列表 = 地址列表)
        }
    }
}
